package org.csu.onlineedubackend.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class HashIdUtil {
    
    /**
     * 生成不规则的8位数ID
     * @param originalId 原始ID
     * @return 8位哈希ID
     */
    public static String generateHashId(Integer originalId) {
        try {
            // 使用MD5哈希算法
            MessageDigest md = MessageDigest.getInstance("MD5");
            String input = originalId.toString() + "salt"; // 添加盐值增加随机性
            byte[] hashBytes = md.digest(input.getBytes());
            
            // 将字节数组转换为数字
            StringBuilder sb = new StringBuilder();
            for (byte b : hashBytes) {
                sb.append(Math.abs(b % 10)); // 取绝对值并模10，确保是0-9的数字
            }
            
            // 取前8位，如果不足8位则补0
            String result = sb.toString();
            if (result.length() >= 8) {
                return result.substring(0, 8);
            } else {
                // 如果不足8位，用0补齐
                while (result.length() < 8) {
                    result += "0";
                }
                return result;
            }
        } catch (NoSuchAlgorithmException e) {
            // 如果MD5不可用，使用简单的哈希算法
            int hash = originalId.hashCode();
            String hashStr = String.valueOf(Math.abs(hash));
            if (hashStr.length() >= 8) {
                return hashStr.substring(0, 8);
            } else {
                while (hashStr.length() < 8) {
                    hashStr += "0";
                }
                return hashStr;
            }
        }
    }
} 